package com.example.erat.service;

import com.example.erat.dto.ClassDTO;
import com.example.erat.dto.StudentDTO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 班级服务接口
 */
public interface ClassService {

    /**
     * 创建班级
     * 
     * @param classDTO 班级信息
     * @return 创建后的班级信息
     */
    ClassDTO createClass(ClassDTO classDTO);
    
    /**
     * 更新班级
     * 
     * @param classDTO 班级信息
     * @return 更新后的班级信息
     */
    ClassDTO updateClass(ClassDTO classDTO);
    
    /**
     * 删除班级
     * 
     * @param id 班级ID
     */
    void deleteClass(Long id);
    
    /**
     * 获取班级详情
     * 
     * @param id 班级ID
     * @return 班级详情
     */
    ClassDTO getClassById(Long id);
    
    /**
     * 获取班级列表
     * 
     * @return 班级列表
     */
    List<ClassDTO> listClasses();
    
    /**
     * 导入学生
     * 
     * @param classId 班级ID
     * @param file Excel文件
     * @return 导入的学生列表
     */
    List<StudentDTO> importStudents(Long classId, MultipartFile file);
    
    /**
     * 添加学生到班级
     * 
     * @param classId 班级ID
     * @param studentDTO 学生信息
     * @return 添加后的学生信息
     */
    StudentDTO addStudent(Long classId, StudentDTO studentDTO);
    
    /**
     * 从班级中删除学生
     * 
     * @param classId 班级ID
     * @param studentId 学生ID
     */
    void removeStudent(Long classId, Long studentId);
    
    /**
     * 获取班级学生列表
     * 
     * @param classId 班级ID
     * @return 学生列表
     */
    List<StudentDTO> listClassStudents(Long classId);
} 